// 定义全局变量

// FIRSTVT集，二维数组，存储firstVT()集，第二维代表第几个产生式，第一维代表集合中的第几个元素
var FIRSTVT = twoDimensionalArrays(20, 20, '\0');

// 存储lastVT()集，第二维代表第几个产生式，第一维代表集合中的第几个元素
var LASTVT = twoDimensionalArrays(20, 20, '\0');

var PriorityTable = twoDimensionalArrays(20, 20, '\0'); // 优先符表，二维数组

// 按照一定的形式存储文法中的所有产生式。
var INPUT = twoDimensionalArrays(20, 20, '\0'); // 文法记录表

var idTbl = idTableArray(30); // 义全局标识符表

var symbol = symbolTableArray(100); // 定义符号表，记录输入的程序片段

var SymbolTbl_Define = ['=', '?', '+', '-', '*', '/', '(', ')', 'v', 'c', 'l', '#', 'N', '\0']; // 定义各个终结符的syn

console.log('FIRSTVT: ', FIRSTVT);
console.log('LASTVT: ', LASTVT);

console.log('idTbl: ', idTbl);
console.log('symbol: ', symbol);

console.log('SymbolTbl_Define: ', SymbolTbl_Define);

// 主函数
function main() {
    var ch; // 是否继续标记

    // 显示文法
    displayGS();

    setTestData();

    // 计算并显示firstVT()和lastVT()
    DisplayFirstVT_LasVT();

    // 创建算符优先关系表
    createPriorityTable();

    fillPriorityTable();

    displayPriorityTab();

    displaySym();

    Clear_Symbol_Tbl();
}

main();
